#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>

#define SERIAL_PORT "/dev/ttyS0" // 串口设备
#define BUFFER_SIZE 1024

void configure_serial_port(int fd) {
    struct termios options;
    tcgetattr(fd, &options);
    options.c_cflag = B115200 | CS8 | CLOCAL | CREAD; // 设置波特率和数据位
    options.c_iflag = IGNPAR; // 忽略奇偶校验
    options.c_oflag = 0; // 不使用输出处理
    options.c_lflag = 0; // 不使用本地模式
    tcflush(fd, TCIFLUSH);
    tcsetattr(fd, TCSANOW, &options);
}

void receive_audio_data(int fd) {
    FILE *audio_file = fopen("received_audio.raw", "wb"); // 创建接收文件
    if (!audio_file) {
        perror("Failed to create audio file");
        return;
    }

    char buffer[BUFFER_SIZE];
    ssize_t bytes_read;
    while ((bytes_read = read(fd, buffer, BUFFER_SIZE)) > 0) {
        fwrite(buffer, 1, bytes_read, audio_file); // 写入接收的数据
    }

    fclose(audio_file);
}

int main() {
    int fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY);
    if (fd == -1) {
        perror("Failed to open serial port");
        return 1;
    }

    configure_serial_port(fd);
    receive_audio_data(fd);
    close(fd);
    return 0;
} 